home *** CD-ROM | disk | FTP | other *** search
/ Nebula 1 / Nebula One.iso / Internet / News / Alexandra.0.82 / Source / ServerCell.m < prev    next >
Encoding:
Text File  |  1996-01-30  |  3.6 KB  |  203 lines

  1.  
  2. #import "ServerCell.h"
  3. #import <misckit/MiscAppDefaults.h>
  4.  
  5. #define IMAGEMARGIN 2.0
  6.  
  7. @implementation ServerCell
  8.  
  9. - serverOpened:sender
  10. {
  11.    opened=TRUE;
  12.    return self;
  13. }
  14.  
  15. - serverClosed:sender
  16. {
  17.    opened=FALSE;
  18.    return self;
  19. }
  20.  
  21. - (BOOL)slowLink
  22. {
  23.    return slowLink;
  24. }
  25.  
  26. - (BOOL)openOnStartup
  27. {
  28.    return openOnStartup;
  29. }
  30.  
  31. - setSlowLink:(BOOL)v
  32. {
  33.    slowLink=v;
  34.    return self;
  35. }
  36.  
  37. - setOpenOnStartup:(BOOL)v
  38. {
  39.    openOnStartup=v;
  40.    return self;
  41. }
  42.  
  43. - setPasswdString:(const char*)v
  44. {
  45.     int n=strlen(v);
  46.     
  47.     if(n>MAX_A_LEN-1)
  48.         n=MAX_A_LEN-1;
  49.     strncpy(pass,v,n);
  50.     pass[n]='\0';
  51.     
  52.     return self;
  53. }
  54.  
  55. - setUserString:(const char*)v
  56. {
  57.     int n=strlen(v);
  58.     
  59.     if(n>MAX_A_LEN-1)
  60.         n=MAX_A_LEN-1;
  61.     strncpy(user,v,n);
  62.     user[n]='\0';
  63.     
  64.     return self;
  65. }
  66.  
  67. - (BOOL)isOpen
  68. {
  69.    return opened;
  70. }
  71.  
  72. - (const char *)user
  73. {
  74.     return user;
  75. }
  76.  
  77. - (const char *)pass
  78. {
  79.     return pass;
  80. }
  81.  
  82. - readServerOptions
  83. {
  84.    const char *buf2;
  85.    char buf1[MAX_A_LEN+80];
  86.    int oos,sl;
  87.  
  88.    sprintf(buf1,"Serveroptions %s",[self stringValue]);
  89.    buf2=[NXApp defaultValue:buf1];
  90.    if(buf2==NULL){
  91.       openOnStartup=FALSE; slowLink=FALSE;
  92.       return self;
  93.    }
  94.    sscanf(buf2,"%d %d",&oos,&sl);
  95.  
  96.    openOnStartup=(BOOL)oos;
  97.    slowLink=(BOOL)sl;
  98.  
  99.    //AUTHENTICATION
  100.    *user='\0';
  101.     *pass='\0';
  102.  
  103.     sprintf(buf1,"Authuser %s",[self stringValue]);
  104.     buf2=[NXApp defaultValue:buf1];
  105.     if(buf2)
  106.         [self setUserString:buf2];
  107.  
  108.     sprintf(buf1,"Authpasswd %s",[self stringValue]);
  109.     buf2=[NXApp defaultValue:buf1];
  110.     if(buf2)
  111.         [self setPasswdString:buf2];
  112.     
  113.    return self;
  114. }
  115.  
  116. - writeServerOptions
  117. {
  118.    char buf1[80+MAX_A_LEN],buf2[80+MAX_A_LEN];
  119.  
  120.    sprintf(buf1,"Serveroptions %s",[self stringValue]);
  121.    sprintf(buf2,"%d %d",(int)openOnStartup,(int)slowLink);
  122.    [NXApp setDefault:buf1 to:buf2];
  123.         
  124.     sprintf(buf1,"Authuser %s",[self stringValue]);
  125.     [NXApp setDefault:buf1 to:user];
  126.     
  127.     sprintf(buf1,"Authpasswd %s",[self stringValue]);
  128.     [NXApp setDefault:buf1 to:pass];
  129.     
  130.    return self;
  131. }
  132.  
  133.  
  134.  
  135.  
  136. - calcCellSize:(NXSize *)theSize inRect:(const NXRect *)aRect
  137.     {
  138.     [super calcCellSize:theSize inRect:aRect];
  139.     theSize->height+=1;
  140.     return self;
  141.     }
  142.  
  143.   
  144. - drawInside:(const NXRect *)cellFrame inView:controlView
  145.     {
  146.     static id     dotImage = nil;
  147.     static id     sharedTextCell = nil;
  148.     NXRect         rect = *cellFrame;
  149.     NXPoint     imageOrigin;
  150.     NXSize         dotSize;
  151.         
  152.     if(!dotImage)
  153.         dotImage = [NXImage findImageNamed:"OpenWindow"];
  154.     [dotImage getSize:&dotSize];
  155.  
  156.     PSsetgray((cFlags1.state || cFlags1.highlighted) ? NX_WHITE : NX_LTGRAY);
  157.     NXRectFill(cellFrame);
  158.  
  159.     if(opened)
  160.         {
  161.         imageOrigin.x = NX_MAXX(cellFrame) - IMAGEMARGIN * 2.0 - dotSize.width;
  162.         imageOrigin.y = NX_Y(cellFrame) + NX_HEIGHT(cellFrame) -
  163.                     (NX_HEIGHT(cellFrame) - dotSize.height) / 2.0;
  164.         [dotImage composite:NX_SOVER toPoint:&imageOrigin];
  165.         }
  166.     NX_WIDTH(&rect) -= (dotSize.width + IMAGEMARGIN * 2.0 - NX_X(&rect));
  167.  
  168.     if (!sharedTextCell) 
  169.         {
  170.         sharedTextCell = [[Cell alloc] init];
  171.         [sharedTextCell setWrap:NO];
  172.         }
  173.     [sharedTextCell setFont:[self font]];
  174.     [sharedTextCell setStringValue:[self stringValue]];
  175.     [sharedTextCell drawInside:&rect inView:controlView];
  176.     
  177.     PSsetgray(NX_DKGRAY);
  178.     if (cFlags1.state || cFlags1.highlighted)
  179.         {
  180.         NXRect rectArray[2];
  181.  
  182.         NXSetRect(&(rectArray[0]),NX_X(cellFrame),NX_Y(cellFrame),
  183.                 NX_WIDTH(cellFrame),1);
  184.         NXSetRect(&(rectArray[1]),NX_X(cellFrame),NX_MAXY(cellFrame)-1,
  185.                 NX_WIDTH(cellFrame), 1.0);
  186.         NXRectFillList(rectArray, 2);
  187.         }
  188.     return self;
  189.     }
  190.  
  191.  
  192. - highlight:(const NXRect *)cellFrame inView:controlView lit:(BOOL)flag
  193.     {
  194.     if(cFlags1.highlighted != flag)
  195.         {
  196.         cFlags1.highlighted = flag;
  197.         [self drawInside:cellFrame inView:controlView];
  198.         }
  199.     return self;
  200.     }
  201.  
  202. @end
  203.